package org.dtrd.modules.service.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.dtrd.config.system.Constant;
import org.dtrd.config.system.Constant.PackageServiceStatus;
import org.dtrd.modules.patient.entity.bean.report.PatientServiceProgramme;
import org.dtrd.modules.service.entity.po.DtrdRlPackagePatient;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 患者和服务包关系表 Mapper 接口
 * </p>
 *
 * @author QR
 * @since 2021-12-16
 */
@Mapper
public interface DtrdRlPackagePatientMapper extends BaseMapper<DtrdRlPackagePatient> {

    /**
     * 获取医生关联的患者中购买体验式服务包的人数
     *
     * @param doctorId  doctorId
     * @param packageId packageId
     * @return 医生关联的患者中购买体验式服务包的人数
     */
    int selectDoctorPatientPackageCount(@Param("doctorId") Integer doctorId,
                                        @Param("packageId") Integer packageId);

    /**
     * 查询患者进行中服务包开始与结束时间
     *
     * @param patientIds (1,2,3)
     * @return
     */
    List<DtrdRlPackagePatient> getServicePackageDuration(@Param("patientIds") String patientIds);

    /**
     * 查询患者服务包记录
     *
     * @param patient
     * @param status
     * @return
     */
    List<DtrdRlPackagePatient> getServicePackage(@Param("patientId") Integer patient, @Param("status") Integer status);

    /**
     * 查询时间周期内服务包
     *
     * @param patientId
     * @param serviceStartTime
     * @param endTime
     * @return
     */
    List<DtrdRlPackagePatient> getServicePackageByTime(@Param("patientId") Integer patientId, @Param("startDate") Date serviceStartTime, @Param("endDate") Date endTime);

    List<Integer> getValidPatientIds(@Param("status") Integer status);

    PatientServiceProgramme getPatientServiceProgramme(@Param("patientId") Integer patientId);
}
